Code
library(knitr)
library(dplyr)
library(sf)
library(mapview)
library(mapsf)Quelles options ?
Claude Grasland
March 9, 2026
Dans les cours précédents les étudiants ont été amenés à extraire des données de très grandes bases dont l’extension maximale couvrait les départements de la Seine Maritime et de l’Eure. Il s’agit désormais d’affiner le choix en se centrant sur l’objet d’étude principal qui est “Rouen”. Mais qu’est ce que l’on entends au juste par “Rouen” ?
Examinons rapidement quelques uns des choix possibles en se bornant à les visualiser sous la forme de cartes interactives (avec le package mapview) ou de cartes stattiques avec le package (mapsf).
L’aire urbaine de Rouen (au sens de l’INSEE) se présente géométriquement comme suit :
On peut résumer rapidement ses caractéristiques
sel<-map
# Calculs
nbc <- dim(sel)[1]
sup <- as.numeric(st_area(st_union(sel))/1000000)
pop <- sum(sel$POPULATION, na.rm=T)
loc <- sum(sel$P21_LOG, na.rm=T)
dpe <- sum(sel$nDPE,na.rm=T)
tab<- c(nbc,sup, pop, loc, dpe)
names(tab)<- c("nb. de communes",
"superfice (km2)",
"population (hab.)",
"nb. de logements",
"nb. de dpe")
kable(tab, digits=0, caption = "Caractéristiques de l'aire urbaine de Rouen")| x | |
|---|---|
| nb. de communes | 316 |
| superfice (km2) | 2792 |
| population (hab.) | 708816 |
| nb. de logements | 359282 |
| nb. de dpe | 173176 |
L’agglomération de Rouen ou unité urbaine se présente géométriquement comme suit :
On peut résumer rapidement ses caractéristiques
# Calculs
nbc <- dim(sel)[1]
sup <- as.numeric(st_area(st_union(sel))/1000000)
pop <- sum(sel$POPULATION, na.rm=T)
loc <- sum(sel$P21_LOG, na.rm=T)
dpe <- sum(sel$nDPE,na.rm=T)
tab<- c(nbc,sup, pop, loc, dpe)
names(tab)<- c("nb. de communes",
"superfice (km2)",
"population (hab.)",
"nb. de logements",
"nb. de dpe")
kable(tab, digits=0, caption = "Caractéristiques de l'agglomération de Rouen")| x | |
|---|---|
| nb. de communes | 50 |
| superfice (km2) | 462 |
| population (hab.) | 475035 |
| nb. de logements | 254993 |
| nb. de dpe | 146038 |
L’agglomération de Rouen ou unité urbaine se présente géométriquement comme suit :
On peut résumer rapidement ses caractéristiques
# Calculs
nbc <- dim(sel)[1]
sup <- as.numeric(st_area(st_union(sel))/1000000)
pop <- sum(sel$POPULATION, na.rm=T)
loc <- sum(sel$P21_LOG, na.rm=T)
dpe <- sum(sel$nDPE,na.rm=T)
tab<- c(nbc,sup, pop, loc, dpe)
names(tab)<- c("nb. de communes",
"superfice (km2)",
"population (hab.)",
"nb. de logements",
"nb. de dpe")
kable(tab, digits=0, caption = "Caractéristiques de l'agglomération de Rouen")| x | |
|---|---|
| nb. de communes | 71 |
| superfice (km2) | 664 |
| population (hab.) | 497225 |
| nb. de logements | 265005 |
| nb. de dpe | 148519 |
La commune de Rouen se présente géométriquement comme suit :
On peut résumer rapidement ses caractéristiques
# Calculs
nbc <- dim(sel)[1]
sup <- as.numeric(st_area(st_union(sel))/1000000)
pop <- sum(sel$POPULATION, na.rm=T)
loc <- sum(sel$P21_LOG, na.rm=T)
dpe <- sum(sel$nDPE,na.rm=T)
tab<- c(nbc,sup, pop, loc, dpe)
names(tab)<- c("nb. de communes",
"superfice (km2)",
"population (hab.)",
"nb. de logements",
"nb. de dpe")
kable(tab, digits=0, caption = "Caractéristiques de l'agglomération de Rouen")| x | |
|---|---|
| nb. de communes | 1 |
| superfice (km2) | 21 |
| population (hab.) | 114083 |
| nb. de logements | 75372 |
| nb. de dpe | 53274 |
Si l’on retient ce choix, on pourra enrichir l’analyse par une étude des subdivisions interne de la commune à trois niveaux :
iris<-st_read("base/iris.geojson") %>% filter(com_code==76540) %>%
mutate(iris_code = as.character(iris_code),
iris_name = as.character(iris_name),
quart_code = as.character(iris_grd_quart_code),
quart_name = as.character(iris_grd_quart_name)) %>%
select(iris_code, iris_name, quart_code, quart_name, geometry) %>%
st_as_sf()Reading layer `iris' from data source
`/Users/claudegrasland1/worldregio/dpe2025/base/iris.geojson'
using driver `GeoJSON'
Simple feature collection with 488 features and 31 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 0.7279768 ymin: 49.17852 xmax: 1.653796 ymax: 49.75766
Geodetic CRS: WGS 84
On peut aussi décider de sélectionner la commune de Rouen et celles qui lui sont contiguës c’est-à-dire qui partagent avec elle une frontière commune.
On peut résumer rapidement ses caractéristiques
# Calculs
nbc <- dim(sel)[1]
sup <- as.numeric(st_area(st_union(sel))/1000000)
pop <- sum(sel$POPULATION, na.rm=T)
loc <- sum(sel$P21_LOG, na.rm=T)
dpe <- sum(sel$nDPE,na.rm=T)
tab<- c(nbc,sup, pop, loc, dpe)
names(tab)<- c("nb. de communes",
"superfice (km2)",
"population (hab.)",
"nb. de logements",
"nb. de dpe")
kable(tab, digits=0, caption = "Caractéristiques de la zone constituée de la commune de Rouen et de ses voisines")| x | |
|---|---|
| nb. de communes | 13 |
| superfice (km2) | 101 |
| population (hab.) | 279549 |
| nb. de logements | 161558 |
| nb. de dpe | 99601 |
On peut enfin décider de construire une zone d’étude définie par des critères spatiaux et non pas territoriaux. C’est-à-dire une forme géométrique dont le tracé est indifférent aux limites adminisratives mais se fonde sur des caractéristiques de distance par rapport à des points caractéristiques.
Supposons à titre d’exemple qu’on veuille définir un carré de 10 kilomètres sur 10 centré approximatvement sur le centre historique de la ville de Rouen. On choisit pour cela le centre de l’IRIS 7654000104 qui correspond à la place du vieux marché.
Comme nous allons mesurer la distance de façon euclidienne, on projette au prélable le fonds de carte en EPSG 2154.
| X | Y |
|---|---|
| 561156.5 | 6928511 |
Nous déterminons alors les coordonnées des points d’un carré de côté 10 km dont le centre géométrique sera le centre de Rouen
| x | |
|---|---|
| xmin | 556156.5 |
| ymin | 6923510.5 |
| xmax | 566156.5 |
| ymax | 6933510.5 |
Puis nous transformons ces coordonnées en polygone que l’on visualise après être revenu à la projection en latitude et longitude
La carré semble incliné lorsqu’on le visualise en projection EPSG 4326 mais il est en fait vertical dans la projection de référence française EPSG 2154. Lorsqu’on réalise des cartes avec map_sf on obtient une visualisation parfaitement verticale :
zon<-st_transform(zon, 2154)
com<-st_transform(map, 2154)
iris<-readRDS("base/mapiris.RDS") %>% st_transform(2154)
ctr<-st_transform(st_centroid(ctr), 2154)
mf_map(zon, type="base", col="lightyellow")
mf_map(com, type="base", col=NA, border="red", add=T, lwd=2)
mf_map(iris, type="base", col=NA, border="red", add=T, lwd=1)
mf_map(ctr, type = "base",col="blue", pch=20, add=T)
mf_label(com, var="NOM",cex=0.8,overlap = F,halo = T)
mf_layout("Zone d'étude de 10km x 10km centrée sur la place du Vieux Marché de Rouen", frame=T,scale = T, arrow=T, credits = "Source : IGN")Comme on peut le voir, cette solution géométrique aboutit à découper les communes et également les IRIS dont les limites ne sont pas respectées. Est-ce un problème ?
Pas nécessairement dans la mesure où on peut combiner cette zone d’étude spatiale avec une autre source de donnée spatiale, la grille de population de l’INSEE par carreaux de 1km ou même de 200m.
Reading layer `grid_rouen' from data source
`/Users/claudegrasland1/worldregio/dpe2025/base/grid_rouen.geojson'
using driver `GeoJSON'
Simple feature collection with 2517 features and 19 fields
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: 0.9911299 ymin: 49.36695 xmax: 1.199355 ymax: 49.49277
Geodetic CRS: WGS 84
mf_map(zon, type="base", col="lightyellow")
mf_map(grid200, type="base", col=NA, border="blue",add=T)
mf_map(com, type="base", col=NA, border="red", add=T, lwd=2)
mf_map(iris, type="base", col=NA, border="red", add=T, lwd=1)
mf_map(ctr, type = "base",col="blue", pch=20, add=T)
mf_label(com, var="NOM",cex=0.8,overlap = F,halo = T)
mf_layout("Zone d'étude de 10km x 10km centrée sur la place du Vieux Marché de Rouen", frame=T,scale = T, arrow=T, credits = "Source : IGN")Comme on peut le voir, la grille de 200m offre une couverture spatiale généralement plus fine que les IRIS et ne concerne que les zones ayant une population minimale. Elle permet donc un repérage beaucoup plus fin des caractéristiques sociales des zones où sont implantés les logements. Elle ne permet pas en revanche de saisir les effets de politiques communales ou de quartiers puisqu’un carreau peut rasselmbler des logements de deux communes différentes.